﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator
{
    public class TranslateBaseDigitacao
    {
        /// <summary>
        /// Transforma uma instância de "DataContract.Request.BaseDigitacao" em uma instância de "BusinessEntity.BaseDigitacao"
        /// </summary>
        /// <param name="pRequest"></param>
        /// <returns></returns>
        protected void ToEntity(DataContract.Request.BaseDigitacao pRequest, BusinessEntity.BaseDigitacao response)
        {
            response.ApelidoCliente = pRequest.ApelidoCliente;
            response.CodigoAgenteCustodia = pRequest.CodigoAgenteCustodia;
            response.CodigoCarteira = pRequest.CodigoCarteira;
            response.CodigoCliente = pRequest.CodigoCliente;
            response.CodigoClienteCustodia = pRequest.CodigoClienteCustodia;
            response.DataMovimento = pRequest.DataMovimento;
            response.DigitoClienteCustodia = pRequest.DigitoClienteCustodia;
            response.DigitoVerificadorCliente = pRequest.DigitoVerificadorCliente;
            response.IndicadorNaoLiquidacao = pRequest.IndicadorNaoLiquidacao;
            response.IndicadorSistemaExterno = pRequest.IndicadorSistemaExterno;            
            response.NumeroSequenciaDigitacao = pRequest.NumeroSequenciaDigitacao;
            response.PercentualAcrescimo = pRequest.PercentualAcrescimo;
            response.PercentualDistribuido = pRequest.PercentualDistribuido;
            response.PrecoInformado = pRequest.PrecoInformado;
            response.QuantidadeDestinadaCliente = pRequest.QuantidadeDestinadaCliente;
            response.SituacaoCliente = pRequest.SituacaoCliente;
            response.TipoDistribuicao = (BusinessEntity.Enum.TipoDistribuicao)pRequest.TipoDistribuicao;
            response.TipoLiquidacao = (BusinessEntity.Enum.TipoLiquidacaoDistribuicao?)pRequest.TipoLiquidacao;
            response.UtilizaContaInvestimento = pRequest.UtilizaContaInvestimento;
            response.ValorDolar = pRequest.ValorDolar;

        }   

        /// <summary>
        /// Transforma uma instância de "BusinessEntity.BaseDigitacao" em uma instância de "DataContract.Request.BaseDigitacao" 
        /// </summary>
        protected void ToResponse(BusinessEntity.BaseDigitacao loteDigitacao, DataContract.Response.BaseDigitacao response)
        {
            response.ApelidoCliente = loteDigitacao.ApelidoCliente;
            response.CodigoAgenteCustodia = loteDigitacao.CodigoAgenteCustodia;
            response.CodigoCarteira = loteDigitacao.CodigoCarteira;
            response.CodigoCliente = loteDigitacao.CodigoCliente;
            response.CodigoClienteCustodia = loteDigitacao.CodigoClienteCustodia;
            response.DataMovimento = loteDigitacao.DataMovimento;
            response.DigitoClienteCustodia = loteDigitacao.DigitoClienteCustodia;
            response.DigitoVerificadorCliente = loteDigitacao.DigitoVerificadorCliente;
            response.IndicadorNaoLiquidacao = loteDigitacao.IndicadorNaoLiquidacao;
            response.IndicadorSistemaExterno = loteDigitacao.IndicadorSistemaExterno;            
            response.NumeroSequenciaDigitacao = loteDigitacao.NumeroSequenciaDigitacao;
            response.PercentualAcrescimo = loteDigitacao.PercentualAcrescimo;
            response.PercentualDistribuido = loteDigitacao.PercentualDistribuido;
            response.PrecoInformado = loteDigitacao.PrecoInformado;
            response.QuantidadeDestinadaCliente = loteDigitacao.QuantidadeDestinadaCliente;
            response.SituacaoCliente = loteDigitacao.SituacaoCliente;
            response.TipoDistribuicao = (DataContract.Enum.TipoDistribuicao?)loteDigitacao.TipoDistribuicao;
            response.TipoLiquidacao =(DataContract.Enum.TipoLiquidacaoDistribuicao?) loteDigitacao.TipoLiquidacao;
            response.UtilizaContaInvestimento = loteDigitacao.UtilizaContaInvestimento;
            response.ValorDolar = loteDigitacao.ValorDolar;
        }
    }
}
